草庐IT

Java Spring MVC 模板引擎

全部标签

c++ - 嵌套类作为C++中父类的模板参数

我想将算法实现为派生自纯虚类的类,表示特定算法解决的问题类型。一般的界面是这样的:templateclassISolutionToProblem{public:virtualvoidInit(constA&input,constB¶m)=0;virtualconstB&ComputeSolution()=0;virtual~ISolutionToProblem(){}};实现例如:templateclassMyAlgorithm:publicISolutionToProblem::WorkData,T>{public:structWorkData{/*StuffusingT..

c++ - 使用模板特化、默认参数和 VS2013 编译错误

templatevoidf(constT&v=T());templatevoidf(conststd::string&v){std::cout();//ErrorinVS2013,OKinVS2012,gcc-4.7f("Test");//OKf(std::string());//OKreturn0;}对于必须使用默认参数的情况,最新的VisualStudio2013编译器会给出以下编译器错误:errorC2440:'defaultargument':cannotconvertfrom'conststd::string*'to'conststd::string&'Reason:cann

c++ - Clang 自动变量模板错误

我去看看你是否可以在变量模板声明中使用auto。templateautoF=T{};很好,但是一旦您尝试使用它,就会发出咔哒声。intf=F;//error:cannotinitializeavariableoftype'int'withanlvalueoftype'auto'autof=F;//Stacktracedecltype(F)f=F;//StackFacestd::cout)>::value;//falsestd::cout)).name();//Stacktracestd::cout),decltype(F)>::value;//truedecltype(auto)、au

c++ - 将 int 数组转换为可变参数模板

假设我有一个像intarr[N]这样的整数数组然后说arr[i]来自一个很小的域(例如1-10)。假设我还有一个具有通用接口(interface)(抽象类)的可变参数模板类templateclassFooImpl:publicFoo{}问题是我如何实现一个功能:Foo*getFoo(intarr[N]);或者更好:Foo*getFoo(int*pint,intsize);这将返回FooImpl模板参数对应我的数组?例如arr={4,2,6,1}我会得到FooImpl 最佳答案 我找到了问题的答案。诀窍在于使用结构可变参数模板而不是我

c++ - 在模板参数的方法中添加类型转换时出现 clang 错误

我有一个模板结构,它将方法的类型和指向方法的指针作为参数,并将其包装在类似C的函数中:templatestructproxy;templatestructproxy{staticRcall(T&obj,Args&&...args){return(obj.*mf)(std::forward(args)...);}};proxy结构在简单的场景中按预期工作,例如:structFoo{intfoo(intx){returnx+1;}};...Foof;proxy::call(f,10);问题是当我在可能展开到的宏中使用代理时:proxy::call(f,10);在clang中,错误是:err

c++ - 带有默认参数的模板类的 operator<< 中的 lambda 错误

谁能告诉我这段代码出了什么问题:template//data;templatevoiditerate(Ff)const{for(unsignedi=0;i&a)//Line17{a.iterate([&os](unsignedi,constB&x){osGCC4.8.1和--std=c++11的错误消息:test.cpp:Infunction‘std::ostream&operator&)’:test.cpp:17:41:error:defaultargumentfortemplateparameterforclassenclosing‘operator&)::__lambda0’a.

c++:通过多级继承从模板子类调用基类的模板方法

我正在寻找从通过C::A和B::A继承它的子类D调用基类A的方法。templateclassA{public:templatevoidFunc(void){std::cout::Func"classB:publicA{};templateclassC:publicA{};classD:publicB,publicC{public:D(){static_cast*>(this)->A::Func();static_cast*>(this)->A::Func();}};这按预期工作,D在初始化时使用子类的模板参数调用B::A::Func和C::A::Func。但是,当D是模板类时,这似乎不

c++ - 如何找到用于声明类的模板参数的数量?

如何检索用于构造某个类的模板参数的数量?为了阐明我在追求什么,假设我有一些类实例,Aa;,我运行以下命令以获取其名称:boost::units::detail::demangle(typeid(decltype(a)).name())假设此调用的输出是someNamespace::A,int,5,Arg2>.我想找到一种可靠地获取参数数量的方法(即4),考虑到参数本身可能具有任意数量的嵌套模板参数级别(我不想计算-即。我想要将Arg1计为单个参数),并且参数可以是类型和值的任意组合。我愿意通过手动字符串摔跤来完成这项工作,但我更喜欢使用boost的紧凑型解决方案。/STL.有什么想法吗

c++ - 打印给定类型名称的模板

出于调试目的,我想打印一个类型的名称,所以我创建了一个函数来实现这个目的(事实上,我从另一个SO答案中借用了它,但我现在找不到),该函数看起来像这样:templatestd::stringTypeName(T){autoname=typeid(T).name();intstatus=0;std::unique_ptrres{abi::__cxa_demangle(name,NULL,NULL,&status),std::free};return((status==0)?res.get():name);}LiveDemo它工作正常:inti=0;floatf=0.f;std::cout但

c++ - 任意顺序的多个标签的模板特化

假设我有一个像这样定义的类event_basetemplateclassevent_base{public:usingdelegate_type=std::function;usingid_type=size_t;protected:std::vector>m_funcs;};和一些像这样定义的空标签结构structmutable_tag{};structcallable_tag{};然后我希望能够基于模板包中给定的标签中的一个(或两个)从该基类派生对于单个标签:templateclassevent;templateclassevent:publicevent_base{};templ